package com;

/**
 * Created with IntelliJ IDEA.
 * Description:有一个长度为 n 的非降序数组，比如[1,2,3,4,5]，
 * 将它进行旋转，即把一个数组最开始的若干个元素搬到数组的末尾，变成一个旋转数组，
 * 比如变成了[3,4,5,1,2]，或者[4,5,1,2,3]这样的。
 * 请问，给定这样一个旋转数组，求数组中的最小值。
 * User: YJ
 * Date: 2024-3-29
 * Time: 20:56
 */
public class minNumberInRotateArrayTest {


    public static void main(String[] args) {
        int[] arr = new int[] {3,4,5,1,2};
        System.out.println(minNumberInRotateArray(arr));
    }
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     * @param nums int整型一维数组
     * @return int整型
     */
    public static int minNumberInRotateArray(int[] nums) {
        // write code here
        if (nums.length == 0) {
            return 0;
        }
        int i = 0;
        int j = nums.length - 1;
        while (i < j) {
            //取中点
            int mid = (i + j) >> 1;
            if (nums[mid] < nums[j]) {
                j = mid;
            } else if (nums[mid] > nums[j]) {
                i = mid + 1;
            } else {
                j --;
            }
        }
        return nums[j];
    }
}
